home *** CD-ROM | disk | FTP | other *** search
/ Enter 2006 September / Enter 09 2006.iso / Internet / SpamExperts Home 1.1 / SpamExperts Home.exe / lib / spamexperts.modules / dns / flags.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-07-14  |  2.5 KB  |  81 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''DNS Message Flags.'''
  5. QR = 32768
  6. AA = 1024
  7. TC = 512
  8. RD = 256
  9. RA = 128
  10. AD = 32
  11. CD = 16
  12. DO = 32768
  13. _by_text = {
  14.     'QR': QR,
  15.     'AA': AA,
  16.     'TC': TC,
  17.     'RD': RD,
  18.     'RA': RA,
  19.     'AD': AD,
  20.     'CD': CD }
  21. _edns_by_text = {
  22.     'DO': DO }
  23. _by_value = []([ (y, x) for x, y in _by_text.iteritems() ])
  24. _edns_by_value = []([ (y, x) for x, y in _edns_by_text.iteritems() ])
  25.  
  26. def _order_flags(table):
  27.     order = list(table.iteritems())
  28.     order.sort()
  29.     order.reverse()
  30.     return order
  31.  
  32. _flags_order = _order_flags(_by_value)
  33. _edns_flags_order = _order_flags(_edns_by_value)
  34.  
  35. def _from_text(text, table):
  36.     flags = 0
  37.     tokens = text.split()
  38.     for t in tokens:
  39.         flags = flags | table[t.upper()]
  40.     
  41.     return flags
  42.  
  43.  
  44. def _to_text(flags, table, order):
  45.     text_flags = []
  46.     for k, v in order:
  47.         if flags & k != 0:
  48.             text_flags.append(v)
  49.             continue
  50.     
  51.     return ' '.join(text_flags)
  52.  
  53.  
  54. def from_text(text):
  55.     '''Convert a space-separated list of flag text values into a flags
  56.     value.
  57.     @rtype: int'''
  58.     return _from_text(text, _by_text)
  59.  
  60.  
  61. def to_text(flags):
  62.     '''Convert a flags value into a space-separated list of flag text
  63.     values.
  64.     @rtype: string'''
  65.     return _to_text(flags, _by_value, _flags_order)
  66.  
  67.  
  68. def edns_from_text(text):
  69.     '''Convert a space-separated list of EDNS flag text values into a EDNS
  70.     flags value.
  71.     @rtype: int'''
  72.     return _from_text(text, _edns_by_text)
  73.  
  74.  
  75. def edns_to_text(flags):
  76.     '''Convert an EDNS flags value into a space-separated list of EDNS flag
  77.     text values.
  78.     @rtype: string'''
  79.     return _to_text(flags, _edns_by_value, _edns_flags_order)
  80.  
  81.